# 回归
"""
KNN(K-近邻算法) : 回归(求平均值)
    1. 计算未知样本到每一个训练样本的距离
    2. 将训练样本根据距离大小升序排列
    3. 取出距离最近的 K 个训练样本
    4. 把这个 K 个样本的目标值计算其平均值
    5. 作为将未知的样本预测的值
"""


# 数据准备
# 2. 4行3列（2列特征，1列标签）
'''
索引  特征1 特征2  标签     欧式距离
 0    1     4    1        √17 
 1    2     0    1        √18 
 2    3     1    0        √8
 3    4     2    1        √2
      5     3    ？（预测）
索引排序（按照距离升序）3 2 0 1 
'''
# 导包
from sklearn.neighbors import KNeighborsRegressor  # 分类

# 2.获取数据
x_train = [[1,4],[2,0],[3,1],[4,2]] #训练集  4行2列
y_train = [1,1,0,0]

# 3.创建模型
model = KNeighborsRegressor(n_neighbors=3)

# 4.模型训练
# es = model.fit(x_train, y_train)
model.fit(x_train, y_train)

# 5.模型预测
x_test = [[5,3]]
y_predict = model.predict(x_test)
print(f'预测结果为：{y_predict}')
# 打印欧式距离和索引排序结果
a,b = model.kneighbors(x_test)
print(a,b)
print('**'*10)
print(model.kneighbors(x_test))